From: Carl Lerche Date: Wed, 19 Mar 2014 18:44:43 +0000 (-0700) Subject: Trying to shell out X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~1129^2~8 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=4274ac261f11237b0ede34828ad149ee0ed02cc3;p=cargo.git Trying to shell out --- diff --git a/Makefile b/Makefile index 663e314de..71c621d3e 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,8 @@ BINS = cargo-compile \ cargo-rustc \ cargo-verify-project -SRC = $(wildcard src/*.rs) +SRC = $(shell find src -name '*.rs') + DEPS = -L libs/hammer.rs/target -L libs/rust-toml/lib TOML = libs/rust-toml/lib/$(shell rustc --crate-file-name libs/rust-toml/src/toml/lib.rs) HAMMER = libs/hammer.rs/target/$(shell rustc --crate-type=lib --crate-file-name libs/hammer.rs/src/hammer.rs) @@ -32,7 +33,7 @@ $(HAMCREST): $(wildcard libs/hamcrest-rust/src/*.rs) $(LIBCARGO): $(SRC) mkdir -p target - $(RUSTC) $(RUSTC_FLAGS) --out-dir target src/cargo.rs + $(RUSTC) $(RUSTC_FLAGS) --out-dir target src/cargo/mod.rs touch $(LIBCARGO) libcargo: $(LIBCARGO) diff --git a/libs/rust-toml b/libs/rust-toml index 894fdd9db..1389ceb42 160000 --- a/libs/rust-toml +++ b/libs/rust-toml @@ -1 +1 @@ -Subproject commit 894fdd9db6c50b9a70d1fc7d4e49c76e86921016 +Subproject commit 1389ceb42b2ae04dac40c8b2d4af8fe21823ecbc diff --git a/src/cargo.rs b/src/cargo.rs deleted file mode 100644 index 13a2ea5a8..000000000 --- a/src/cargo.rs +++ /dev/null @@ -1,77 +0,0 @@ -#[crate_type="rlib"]; - -extern crate serialize; -use serialize::{Decoder}; -use std::fmt; -use std::fmt::{Show,Formatter}; - -#[deriving(Decodable,Encodable,Eq,Clone,Ord)] -pub struct Manifest { - project: ~Project, - root: ~str, - lib: ~[LibTarget], - bin: ~[ExecTarget] -} - -#[deriving(Decodable,Encodable,Eq,Clone,Ord)] -pub struct ExecTarget { - name: ~str, - path: ~str -} - -#[deriving(Decodable,Encodable,Eq,Clone,Ord)] -pub struct LibTarget { - name: ~str, - path: ~str -} - -//pub type LibTarget = Target; -//pub type ExecTarget = Target; - -#[deriving(Decodable,Encodable,Eq,Clone,Ord)] -pub struct Project { - name: ~str, - version: ~str, - authors: ~[~str] -} - -pub type CargoResult = Result; - -pub struct CargoError { - message: ~str, - exit_code: uint -} - -impl CargoError { - pub fn new(message: ~str, exit_code: uint) -> CargoError { - CargoError { message: message, exit_code: exit_code } - } -} - -impl Show for CargoError { - fn fmt(&self, f: &mut Formatter) -> fmt::Result { - write!(f.buf, "{}", self.message) - } -} - -pub trait ToCargoError { - fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result; -} - -impl ToCargoError for Result { - fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result { - match self { - Err(_) => Err(CargoError{ message: message, exit_code: exit_code }), - Ok(val) => Ok(val) - } - } -} - -impl ToCargoError for Option { - fn to_cargo_error(self, message: ~str, exit_code: uint) -> CargoResult { - match self { - None => Err(CargoError{ message: message, exit_code: exit_code }), - Some(val) => Ok(val) - } - } -} diff --git a/src/cargo/mod.rs b/src/cargo/mod.rs new file mode 100644 index 000000000..c33c7fde6 --- /dev/null +++ b/src/cargo/mod.rs @@ -0,0 +1,78 @@ +#[crate_id="cargo"]; +#[crate_type="rlib"]; + +extern crate serialize; +use serialize::{Decoder}; +use std::fmt; +use std::fmt::{Show,Formatter}; + +#[deriving(Decodable,Encodable,Eq,Clone,Ord)] +pub struct Manifest { + project: ~Project, + root: ~str, + lib: ~[LibTarget], + bin: ~[ExecTarget] +} + +#[deriving(Decodable,Encodable,Eq,Clone,Ord)] +pub struct ExecTarget { + name: ~str, + path: ~str +} + +#[deriving(Decodable,Encodable,Eq,Clone,Ord)] +pub struct LibTarget { + name: ~str, + path: ~str +} + +//pub type LibTarget = Target; +//pub type ExecTarget = Target; + +#[deriving(Decodable,Encodable,Eq,Clone,Ord)] +pub struct Project { + name: ~str, + version: ~str, + authors: ~[~str] +} + +pub type CargoResult = Result; + +pub struct CargoError { + message: ~str, + exit_code: uint +} + +impl CargoError { + pub fn new(message: ~str, exit_code: uint) -> CargoError { + CargoError { message: message, exit_code: exit_code } + } +} + +impl Show for CargoError { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + write!(f.buf, "{}", self.message) + } +} + +pub trait ToCargoError { + fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result; +} + +impl ToCargoError for Result { + fn to_cargo_error(self, message: ~str, exit_code: uint) -> Result { + match self { + Err(_) => Err(CargoError{ message: message, exit_code: exit_code }), + Ok(val) => Ok(val) + } + } +} + +impl ToCargoError for Option { + fn to_cargo_error(self, message: ~str, exit_code: uint) -> CargoResult { + match self { + None => Err(CargoError{ message: message, exit_code: exit_code }), + Some(val) => Ok(val) + } + } +} diff --git a/src/cargo/util/mod.rs b/src/cargo/util/mod.rs new file mode 100644 index 000000000..5d5d99681 --- /dev/null +++ b/src/cargo/util/mod.rs @@ -0,0 +1 @@ +pub use self::process::process; diff --git a/src/cargo/util/process.rs b/src/cargo/util/process.rs new file mode 100644 index 000000000..c62907ea3 --- /dev/null +++ b/src/cargo/util/process.rs @@ -0,0 +1,25 @@ +use std::os; +use std::io::process::{Process,ProcessConfig,InheritFd}; + +pub struct ProcessBuilder { + program: ~str, + args: ~[~str], + path: ~[~str] +} + +impl ProcessBuilder { + fn args(mut self, arguments: &[~str]) -> ProcessBuilder { + self.args = arguments.clone(); + self + } +} + +pub fn process(cmd: &str) -> ProcessBuilder { + ProcessBuilder { program: cmd.to_owned(), args: ~[], path: get_curr_path() } +} + +fn get_curr_path() -> ~[~str] { + os::getenv("PATH").map(|path| { + path.split(std::path::SEP).collect() + }).or(~[]) +} diff --git a/tests/test_cargo_compile.rs b/tests/test_cargo_compile.rs index 70ff54252..8594d320c 100644 --- a/tests/test_cargo_compile.rs +++ b/tests/test_cargo_compile.rs @@ -13,7 +13,7 @@ test!(cargo_compile_with_explicit_manifest_path { version = "0.5.0" authors = ["wycats@example.com"] - [[lib]] + [[bin]] name = "foo" "#) @@ -23,6 +23,12 @@ test!(cargo_compile_with_explicit_manifest_path { }"#) .build(); + cargo::util::process("cargo-compile") + .args([]); + // //.extra_path("target/") + // //.cwd("/foo/bar") + // //.exec_with_output() + fail!("not implemented"); // 1) Setup project // 2) Run cargo-compile --manifest-path /tmp/bar/zomg